package com.ocom.payconfig.controller;

import com.ocom.common.constant.PayConfigUrl;
import com.ocom.common.entity.card.EntityConsTypeConfig;
import com.ocom.common.enums.ResultEnum;
import com.ocom.common.dto.ConsTypeConfigDto;
import com.ocom.common.request.web.AddConsTypeRequest;
import com.ocom.common.resp.Result;
import com.ocom.common.utils.ResultUtil;
import com.ocom.payconfig.service.ConsTypeConfigService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

/**
 * @Description: TODO
 * @Author: 朱晖
 * @Date: 2022/7/20
 **/
@RestController
public class ConsTypeController {

    @Autowired
    ConsTypeConfigService consTypeConfigService;

    /**
     * 2.44获取消费类型（getConsType）
     *
     * @param comId
     * @return
     */
    @PostMapping(PayConfigUrl.Url_GetConsType)
    public Result getConsType(Long comId) {
        return ResultUtil.success(consTypeConfigService.getListByComId(comId));
    }

    @PostMapping(PayConfigUrl.Url_setConsType)
    public Result setConsType(@RequestBody ConsTypeConfigDto entityConsTypeConfig) {
        if (entityConsTypeConfig.getComId() == null || entityConsTypeConfig.getConsType() == null || entityConsTypeConfig.getConsName() == null) {
            return ResultUtil.error(ResultEnum.Err_203);
        }
        EntityConsTypeConfig consTypeName = consTypeConfigService.selectConsTypeName(entityConsTypeConfig.getComId(), entityConsTypeConfig.getConsName(), entityConsTypeConfig.getConsType());
        if (consTypeName != null) {
            return ResultUtil.error(ResultEnum.Err_4037);
        }
        boolean updateConsType = consTypeConfigService.updateConsType(entityConsTypeConfig.getComId(), entityConsTypeConfig);
        if (updateConsType) {
            return ResultUtil.success();
        } else {
            return ResultUtil.error(ResultEnum.Err_3014);
        }
    }

    @PostMapping(PayConfigUrl.Url_addConsType)
    public Result addConsType(@RequestBody AddConsTypeRequest request) {
        if (request.getComId() == null || request.getConsType() == null || request.getConsTypeName() == null) {
            return ResultUtil.error(ResultEnum.Err_203);
        }
        EntityConsTypeConfig consTypeName = consTypeConfigService.selectConsTypeName(request.getComId(), request.getConsTypeName(), request.getConsType());
        if (consTypeName != null) {
            return ResultUtil.error(ResultEnum.Err_4037);
        }
        EntityConsTypeConfig entityConsTypeConfig = new EntityConsTypeConfig();
        entityConsTypeConfig.setComId(request.getComId());
        entityConsTypeConfig.setConsType(request.getConsType());
        entityConsTypeConfig.setConsName(request.getConsTypeName());
        entityConsTypeConfig.setSubAccount(request.getSubAccountNo());
        entityConsTypeConfig.setWalletSerial(request.getWalletSerial());
        entityConsTypeConfig.setWithholdSerial(request.getWithholdSerial());
        boolean saveResult = consTypeConfigService.save(entityConsTypeConfig);
        if (saveResult) {
            return ResultUtil.success();
        } else {
            return ResultUtil.error(ResultEnum.Err_3014);
        }
    }
}
